[IA64] memmap: move pal_call_stub from xenasm.S
authorAlex Williamson <alex.williamson@hp.com>
Mon, 21 May 2007 19:53:34 +0000 (13:53 -0600)
committerAlex Williamson <alex.williamson@hp.com>
Mon, 21 May 2007 19:53:34 +0000 (13:53 -0600)
Now lives in dom_fw_asm.S to be shared by xen and libxc.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
xen/arch/ia64/xen/Makefile
xen/arch/ia64/xen/dom_fw_asm.S [new file with mode: 0644]
xen/arch/ia64/xen/dom_fw_common.c
xen/arch/ia64/xen/xenasm.S
xen/include/asm-ia64/dom_fw.h

index 2ddd6bfd6044c8abba9d8bef7bc951cf6980432d..63c74c84f87ce6cc12e9d1f5c6dc9260a3863208 100644 (file)
@@ -6,6 +6,7 @@ obj-y += acpi.o
 obj-y += dom0_ops.o
 obj-y += domain.o
 obj-y += dom_fw.o
+obj-y += dom_fw_asm.o
 obj-y += fw_emul.o
 obj-y += hpsimserial.o
 obj-y += hypercall.o
diff --git a/xen/arch/ia64/xen/dom_fw_asm.S b/xen/arch/ia64/xen/dom_fw_asm.S
new file mode 100644 (file)
index 0000000..9a89c16
--- /dev/null
@@ -0,0 +1,41 @@
+// moved from xenasm.S to be shared by xen and libxc
+/*
+ * Assembly support routines for Xen/ia64
+ *
+ * Copyright (C) 2004 Hewlett-Packard Co
+ *      Dan Magenheimer <dan.magenheimer@hp.com>
+ *
+ * Copyright (c) 2007 Isaku Yamahata <yamahata at valinux co jp>
+ *                    VA Linux Systems Japan K.K.
+ */
+
+//  These instructions are copied in the domains.
+//  This is the virtual PAL, which simply does a hypercall.
+//  The size is 2 bundles (32 Bytes).  It handles both static and stacked
+//    convention.
+//  If you modify this code, you have to modify dom_fw.h (for the size) and
+//   dom_fw_pal_hypercall_patch.
+
+// This file is shared with xen and libxc.
+// GLOBAL_ENTRY() end END() macro can't be used.
+
+//GLOBAL_ENTRY(xen_ia64_pal_call_stub)
+.global xen_ia64_pal_call_stub;
+.align 32;
+.proc xen_ia64_pal_call_stub;
+xen_ia64_pal_call_stub:
+       {
+        .mii
+       addl r2=0x1000,r0       //  Hypercall number (Value is patched).
+       mov r9=256
+       ;; 
+       cmp.gtu p7,p8=r9,r28            /* r32 <= 255? */
+       }
+       {
+        .mbb
+       break 0x1000            //  Hypercall vector (Value is patched).
+(p7)   br.cond.sptk.few rp
+(p8)   br.ret.sptk.few rp
+       }
+//END(xen_ia64_pal_call_stub)
+.endp xen_ia64_pal_call_stub
index c631c4e3ae9b39d240fe20839b989f1a4b02466a..fcf3f96fadcee34bf8929b11efa9cf5fd8daafe8 100644 (file)
@@ -110,17 +110,19 @@ build_hypercall_bundle(uint64_t *imva, uint64_t brkimm, uint64_t hypnum, uint64_
 static void
 build_pal_hypercall_bundles(uint64_t *imva, uint64_t brkimm, uint64_t hypnum)
 {
-       extern unsigned long pal_call_stub[];
+       extern unsigned long xen_ia64_pal_call_stub[];
        IA64_BUNDLE bundle;
        INST64_A5 slot_a5;
        INST64_M37 slot_m37;
 
-       /* The source of the hypercall stub is the pal_call_stub function
-          defined in xenasm.S.  */
+       /*
+        * The source of the hypercall stub is
+        * the xen_ia64_pal_call_stub function defined in dom_fw_asm.S. 
+        */
 
        /* Copy the first bundle and patch the hypercall number.  */
-       bundle.i64[0] = pal_call_stub[0];
-       bundle.i64[1] = pal_call_stub[1];
+       bundle.i64[0] = xen_ia64_pal_call_stub[0];
+       bundle.i64[1] = xen_ia64_pal_call_stub[1];
        slot_a5.inst = bundle.slot0;
        slot_a5.imm7b = hypnum;
        slot_a5.imm9d = hypnum >> 7;
@@ -132,8 +134,8 @@ build_pal_hypercall_bundles(uint64_t *imva, uint64_t brkimm, uint64_t hypnum)
        ia64_fc(imva + 1);
        
        /* Copy the second bundle and patch the hypercall vector.  */
-       bundle.i64[0] = pal_call_stub[2];
-       bundle.i64[1] = pal_call_stub[3];
+       bundle.i64[0] = xen_ia64_pal_call_stub[2];
+       bundle.i64[1] = xen_ia64_pal_call_stub[3];
        slot_m37.inst = bundle.slot0;
        slot_m37.imm20a = brkimm;
        slot_m37.i = brkimm >> 20;
index 8a819bfac930903b2f4546f03685769212c70636..bbc88f8ea06c732e5fcf57211a3c299429f64908 100644 (file)
@@ -356,26 +356,3 @@ stacked:
        br.ret.sptk.few rp
 END(pal_emulator_static)
 
-//  These instructions are copied in the domains.
-//  This is the virtual PAL, which simply does a hypercall.
-//  The size is 2 bundles (32 Bytes).  It handles both static and stacked
-//    convention.
-//  If you modify this code, you have to modify dom_fw.h (for the size) and
-//   dom_fw_pal_hypercall_patch.
-GLOBAL_ENTRY(pal_call_stub)
-       {
-        .mii
-       addl r2=0x1000,r0       //  Hypercall number (Value is patched).
-       mov r9=256
-       ;; 
-       cmp.gtu p7,p8=r9,r28            /* r32 <= 255? */
-       }
-       {
-        .mbb
-       break 0x1000            //  Hypercall vector (Value is patched).
-(p7)   br.cond.sptk.few rp
-(p8)   br.ret.sptk.few rp
-       }
-END(pal_call_stub)
-
-
index 76b82522f2ee833546986393cceb920f8f8000fc..c8c13adb3243e6a268cf58b86edacdee3eb35263 100644 (file)
@@ -59,7 +59,8 @@
  * rp=b0 indicates the return point.
  *
  * A single hypercall is used for all PAL calls.
- * The hypercall stub is pal_call_stub (xenasm.S).  Its size is 2 bundles.
+ * The hypercall stub is xen_ia64_pal_call_stub (dom_fw_asm.S). 
+ * Its size is 2 bundles.
  */
 
 #define FW_HYPERCALL_PAL_CALL_INDEX    0x80UL